u`
eLXgсFp.301u}`LXgfQ[Vv
Q[JKFS~̕`̃tH[AhԂA̕`A^CgʂƉʑJ Ȃ

p.301 }`LXgfQ[V

EfQ[g̓o^Ɂu+=vp邱ƂŁAP̃fQ[gɂQȏ̃IuWFNgo^邱Ƃ\
E}`LXgfQ[VƂAĂяoɂÃ\bhɓ삷
E쏇̕ۏ؂Ȃ߁A߂l^voidłfQ[gɌ
EF
@delegate void fQ[g(c); //fQ[g̐錾(߂lAL薳ǂOK))
@F
@fQ[g Qƕϐ = new fQ[g(\bh@); //QƕϐŇ@Ă΂
@Qƕϐ += new fQ[g(\bhA); //QƕϐŇ@AĂ΂
@Qƕϐ += new fQ[g(\bhB); //QƕϐŇ@ABĂ΂
EȂu-=vpāAo^ς݂̃fQ[gIuWFNg\
EF
@Qƕϐ -= new fQ[g(\bhA); //QƕϐŇ@BĂ΂

p.302 delegate05.cs

//p.302 delegate05.cs
using System;
delegate void MyDG(); //fQ[g̐錾(߂lA)
class MyClass {
    public void show1() { //MainƂ͈قȂNXɂCX^X\bh@
        Console.WriteLine("show1Ă΂܂");
    }
    public void show2() { //MainƂ͈قȂNXɂCX^X\bhA
        Console.WriteLine("show2Ă΂܂");
    }
    public void show3() { //MainƂ͈قȂNXɂCX^X\bhB
        Console.WriteLine("show3Ă΂܂");
    }
}
class delegate05 {
    public static void Main() {
        MyClass mc = new MyClass(); //CX^X\bh@AB̂NX̃CX^X𐶐
        MyDG md = new MyDG(mc.show1); //CX^X\bh@̃fQ[g𐶐mdƂ
        Console.WriteLine("1ڂmd()s܂");
        md(); //@Ă΂
        md += new MyDG(mc.show2); //CX^X\bhÃfQ[g𐶐mdɒǉo^Ƃ
        Console.WriteLine("Qڂmd()s܂");
        md(); //@AĂ΂
        md += new MyDG(mc.show3); //CX^X\bhB̃fQ[g𐶐mdɒǉo^Ƃ
        Console.WriteLine("Rڂmd()s܂");
        md(); //@ABĂ΂
        md -= new MyDG(mc.show1); //CX^X\bh@̃fQ[g𐶐md
        Console.WriteLine("Sڂmd()s܂");
        md(); //ABĂ΂
    }
}

AWKFp.302 delegate05.cs

ER\[ɂR̃\bhɕ\us܂(y/n)vőIł悤ɂ悤
F
퓬I@hSƐ킢܂H(y/n):y
퓬IAXCƐ킢܂H(y/n):n
퓬IB喂mƐ킢܂H(y/n):y
hSU܂
喂mU܂
퓬I@hSƐ킢܂H(y/n):

쐬

//AWKFp.302 delegate05.cs
using System;
delegate void MyDG(); //fQ[g̐錾(߂lA)
class MyClass {
    public void Dragon() { //MainƂ͈قȂNXɂCX^X\bh@
        Console.WriteLine("hSU܂");
    }
    public void Slime() { //MainƂ͈قȂNXɂCX^X\bhA
        Console.WriteLine("XCU܂");
    }
    public void Daimado() { //MainƂ͈قȂNXɂCX^X\bhB
        Console.WriteLine("喂mU܂");
    }
}
class delegate05 {
    public static void Main() {
        MyClass mc = new MyClass(); //CX^X\bh@AB̂NX̃CX^X𐶐
        MyDG md; //fQ[g̎Qƕϐ錾
        string ans = "";
        do {
            md = null; //fQ[g𖳂ɂĂ
            Console.Write("퓬I@hSƐ킢܂H(y/n)F"); ans = Console.ReadLine();
            if (ans == "y") {
                md += new MyDG(mc.Dragon); //CX^X\bh@̃fQ[g𐶐mdɓo^
            }
            Console.Write("퓬IAXCƐ킢܂H(y/n)F"); ans = Console.ReadLine();
            if (ans == "y") {
                md += new MyDG(mc.Slime); //CX^X\bhÃfQ[g𐶐mdɓo^
            }
            Console.Write("퓬IB喂mƐ킢܂H(y/n)F"); ans = Console.ReadLine();
            if (ans == "y") {
                md += new MyDG(mc.Daimado); //CX^X\bhB̃fQ[g𐶐mdɓo^
            }
            if (md != null) { //Pło^Ă
                md(); //}`LXgfQ[gs
            }
        } while (md != null);
    }
}

p.304 \bh

EfQ[gɊ̃\bho^ɁAo^ê܂܋Lqł
EF fQ[g Qƕϐ = delegate(Xg){\bh̓e};
EFMyDG md = delegate() { Console.WriteLine("show1Ă΂܂"); };
Eƃ\bhȂȂ̂ŁA\bhƂ
E}`LXgfQ[V\u-=v͕sȂ̂Œ

p.304 anomethed01.cs

//p.304 anomethed01.cs
using System;
delegate int MyDelegate(string s); //fQ[g̐錾(߂lLAL)
class MyClass {
    public int Show(string s) { //MainƂ͈قȂNXɂCX^X\bh
        Console.WriteLine("{0}Ɠ͂܂B", s);
        return 0;
    }
}
class AnoMethed01 {
    public static void Main() {
        MyClass mc = new MyClass();
        Console.Write(" --- ");
        string x = Console.ReadLine();
        //]^
        MyDelegate mdg = new MyDelegate(mc.Show);
        mdg(x);
        //\bh
        MyDelegate mdg2 = delegate (string i) { //L
            Console.WriteLine("{0}Ɠ͂܂B", i);
            return 0;
        };
        mdg2(x); //Ăяo@͓
    }
}

AWKFp.304 anomethed01.cs

E]^ׂ̕č폜悤

쐬

//p.304 anomethed01.cs
using System;
delegate int MyDelegate(string s); //fQ[g̐錾(߂lLAL)
class AnoMethed01 {
    public static void Main() {
        Console.Write(" --- ");
        string x = Console.ReadLine();
        //\bh
        MyDelegate mdg2 = delegate (string i) { //L
            Console.WriteLine("{0}Ɠ͂܂B", i);
            return 0;
        };
        mdg2(x); //Ăяo@͓
    }
}

AWKFp.302 delegate05.csîQj

ER̃fQ[gp\bhׂē\bhɂ悤

쐬

//AWKFp.302 delegate05.csîQj
using System;
delegate void MyDG(); //fQ[g̐錾(߂lA)
class delegate05 {
    public static void Main() {
        MyDG md; //fQ[g̎Qƕϐ錾
        string ans = "";
        do {
            md = null; //fQ[g𖳂ɂĂ
            Console.Write("퓬I@hSƐ킢܂H(y/n)F"); ans = Console.ReadLine();
            if (ans == "y") {
                md += delegate(){Console.WriteLine("hSU܂");}; //\bhmdɓo^
            }
            Console.Write("퓬IAXCƐ킢܂H(y/n)F"); ans = Console.ReadLine();
            if (ans == "y") {
                md += delegate(){Console.WriteLine("XCU܂");}; //\bhmdɓo^
            }
            Console.Write("퓬IB喂mƐ킢܂H(y/n)F"); ans = Console.ReadLine();
            if (ans == "y") {
                md += delegate(){Console.WriteLine("喂mU܂");}; //\bhmdɓo^
            }
            if (md != null) { //Pło^Ă
                md(); //}`LXgfQ[gs
            }
        } while (md != null);
    }
}

p.306 _

E͊֐̊ȈՏŁA̎d|vOɍ̗pĂ
EApʂɂĕ@قȂ邱Ƃ蒍
EC#ł͎ɁA\bh̊ȈՋLqɊp
EF (Xg) => ; //Xgł͌^̋Lq͕sv
EF (x) => Show(x); //xnShow\bhĂ
EȂAȂ\bh̏ꍇu()v̂݋Lq
EF () => Show(); //̂ȂShow\bhĂ
EfQ[g̃\bho^ɗpƗǂ
EFMyDelegate mdg = new MyDelegate(mc.Show);
@  MyDelegate mdg = () => mc.Show();

p.307 lambda01.cs

//p.307 lambda01.cs
using System;
delegate void MyDelegate(); //fQ[g̐錾(߂lA)
class lambda01 {
    public static void show() {
        Console.WriteLine("Ă΂܂");
    }
    public static void Main() {
        // show\bhĂяo
        show();
        // fQ[g̍쐬
        MyDelegate md = () => show(); //́uMyDelegate md = new MyDelegate(show);v
        //fQ[gʂshow\bhs
        md(); 
    }
}

p.308i\bhƃ_j

E_ŃfQ[g̓\bhLqł
EFMyDelegate md = delegate () { Console.WriteLine("͂܂");};
@  MyDelegate md = () => { Console.WriteLine("͂܂");};
EFMyDelegate md = delegate (i) { Console.WriteLine("{0}Ɠ͂܂", i);};
@  MyDelegate md = (i) => { Console.WriteLine("{0}Ɠ͂܂", i);};
Ě^̓fQ[g̒`pĔf

p.307 lambda02.cs

//p.307 lambda02.cs
using System;
delegate int MyDelegate(int x, int y);
class lambda02
{
    public static void Main()
    {
        MyDelegate md = (x, y) => { return x + y; }; //\bh_
        Console.WriteLine("2 + 3 = {0}", md(2, 3));
    }
}

p.308i\bhƃ}`LXgƃ_j

E}`LXgɂĂ\bh_ŋLqėpł
EȂu+=vpɁAfQ[g^̎Qƕϐ𕡐`āuQƕϐ = Qƕϐ + QƕϐvƂ邱ƂŃ}`LXg\ł
@ lambda03.cs016s
E܂A_̍ӂ̈P̏ꍇAJbRȗł
FMyDelegate md = (i) => { Console.WriteLine("{0}Ɠ͂܂", i);};
  MyDelegate md =  i  => { Console.WriteLine("{0}Ɠ͂܂", i);};

p.309 lambda03.cs

//p.309 lambda03.cs
using System;
delegate void MyDelegate(int x);
class lambda03
{
    public static void Main()
    {
        MyDelegate md1 = x => {Console.WriteLine("{0}̂Q{1}", x, x * x);}; //_ŋLq@
        MyDelegate md2 = x => {Console.WriteLine("{0}̂Q{{1}", x, x * 2);}; //_ŋLqA
        MyDelegate md = md1 + md2; //}`LXgfQ[Vɂ
        md(10); //@AĂяo
    }
}

AWKFp.309 lambda03.cs

EfQ[g̎QƕϐRpĂ̂APɂ悤

쐬

//AWKFp.309 lambda03.cs
using System;
delegate void MyDelegate(int x);
class lambda03
{
    public static void Main()
    {
        MyDelegate md = x => {Console.WriteLine("{0}̂Q{1}", x, x * x);}; //_ŋLq@o^
        md += x => {Console.WriteLine("{0}̂Q{{1}", x, x * 2);}; //_ŋLqAǉo^
        md(10); //@AĂяo
    }
}

AWKFp.302 delegate05.csîRj

ER̓\bhׂă_ɂ悤

쐬

//AWKFp.302 delegate05.csîRj
using System;
delegate void MyDG(); //fQ[g̐錾(߂lA)
class delegate05 {
    public static void Main() {
        MyDG md; //fQ[g̎Qƕϐ錾
        string ans = "";
        do {
            md = null; //fQ[g𖳂ɂĂ
            Console.Write("퓬I@hSƐ킢܂H(y/n)F"); ans = Console.ReadLine();
            if (ans == "y") {
                md += () => Console.WriteLine("hSU܂"); //_mdɓo^
            }
            Console.Write("퓬IAXCƐ킢܂H(y/n)F"); ans = Console.ReadLine();
            if (ans == "y") {
                md += () => Console.WriteLine("XCU܂"); //_mdɓo^
            }
            Console.Write("퓬IB喂mƐ킢܂H(y/n)F"); ans = Console.ReadLine();
            if (ans == "y") {
                md += () => Console.WriteLine("喂mU܂"); //_mdɓo^
            }
            if (md != null) { //Pło^Ă
                md(); //}`LXgfQ[gs
            }
        } while (md != null);
    }
}

eLXgю\Fp.310uCxgv

Q[JKFS~̕`̃tH[AhԂA̕`A^CgʂƉʑJ Ȃ

K16 S~̕`E

EDrawEllipse\bh͉~`ꍇɒIł͂Ȃ̂ŁAyƒSWƔaw肵ČĂяo悤ɃubWƂȂDrawCircle\bhgݍ݂悤
F void DrawCircle(PaintEventArgs e, Pen p, int x, int y, int r)
EXẂuSx - arvAYẂuSy - arvAƕ́u2 * rvƂȂ

쐬

//K16 S~̕`E
using System; //tH[AvP[VɕK{
using System.Windows.Forms; //tH[AvP[VɕK{
using System.Drawing; //Imagep
class Program : Form { //FormNXp
    Image backb = Image.FromFile("backb.bmp"); //wi摜̓Ǎ
    Image enemy = Image.FromFile("enemy.gif"); //ACe摜̓Ǎ
    Image burn = Image.FromFile("burn.gif"); //ʗp摜̓Ǎ
    Pen mypen = new Pen(Color.Red, 2); //y𐶐(l͐ԁA2)
    void DrawCircle(PaintEventArgs e, Pen p, int x, int y, int r) { //yȉǉzyASWAaw肵ĉ~`
        e.Graphics.DrawEllipse(p, x - r, y - r, 2 * r, 2 * r); //~̕`Ă
    }
    protected override void OnPaint(PaintEventArgs e) { //Form̃\bhI[o[Ch
        base.OnPaint(e); //܂AFormNXɂ郁\bh̓e({ĕ`揈)s
        e.Graphics.DrawImage(backb, 0, 0); //wi摜(0,0)`
        e.Graphics.DrawRectangle(mypen, 78, 411, 485, 64); //GA̕`
        int mx = backb.Width / 2, my = backb.Height / 2; //W𓾂
        mypen.Color = Color.Yellow; //yFF
        mypen.Width = 10;  //y10
        for (int i = 1; i <= 4; i++) { //4JԂ
            DrawCircle(e, mypen, mx, my, 15 * i); //yύXzyASWAaw肵ĉ~`
        }
        //e.Graphics.DrawImage(enemy, mx - enemy.Width / 2, my - enemy.Height / 2); //ACe摜𒆉ɕ`
        //e.Graphics.DrawImage(burn, mx - burn.Width / 2, my - burn.Height / 2); //ACe摜𒆉ɕ`
    }
    void OnKeyDown(object o, KeyEventArgs e) { //L[{[hꂽɌĂ΂郁\bh
        if(e.KeyCode.ToString() == "Escape") { //EscL[ꂽ
            Close(); //tH[AvP[VI
        }
    }
    Program() { //RXgN^
        KeyDown += new KeyEventHandler(OnKeyDown); //L[{[hꂽɌĂ΂郁\bho^
    }
    static void Main() { //public̎w͔C
        Program p = new Program(); //ptH[̃CX^X𐶐
        p.Width = 660; //CX^XWidthvpeBɕ
        p.Height = 520; //CX^XHeightvpeBɍ
        p.Text = "Game"; //CX^XTextvpeBɃtH[
        p.ControlBox = false; //ControlBox\ɂ
        p.FormBorderStyle = FormBorderStyle.Fixed3D; //tH[TCYύX֎~
        Application.Run(p); //CX^Xʂɏo
    }
}

Q[JK\FhԂA̕`A^CgʂƉʑJ Ȃ
